package com.huluobo.a2203kotlinshopping.utils

import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.CircleCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.huluobo.a2203kotlinshopping.R

/**
 *  Created by LC on 2024/6/24.
 */
object ImageUtils {
    /**
     * 加载普通图片
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 展示的控件
     */
    fun loadImage(context: Context, url: String, imageView: ImageView) {
        Glide.with(context)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))//占位图,当图片正在加载的时候会展示的图片
            .error(R.drawable.baseline_error_24)//错误图片,当图片家在错误的时候会展示的图片
            .skipMemoryCache(true)//设置是否跳过内存缓存
            .diskCacheStrategy(DiskCacheStrategy.ALL)//设置全局使用磁盘缓存
            .transform(CenterCrop())//展示图片的方式,中心拉伸
            .into(imageView)
    }

    /**
     * 加载圆形图片
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 展示的控件
     */
    fun loadCircleImage(context: Context, url: String, imageView: ImageView) {
        Glide.with(context)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))//占位图,当图片正在加载的时候会展示的图片
            .error(R.drawable.baseline_error_24)//错误图片,当图片家在错误的时候会展示的图片
            .skipMemoryCache(true)//设置是否跳过内存缓存
            .diskCacheStrategy(DiskCacheStrategy.ALL)//设置全局使用磁盘缓存
            .transform(CenterCrop(), CircleCrop())//展示图片的方式,中心拉伸,CircleCrop 圆形拉伸
            .into(imageView)
    }

    /**
     * 加载圆角图片
     * @param context 上下文
     * @param url 图片地址
     * @param imageView 展示的控件
     * @param radius 圆角半径
     */
    fun loadRoundImage(context: Context, url: String, imageView: ImageView, radius: Int) {
        Glide.with(context)
            .load(url)
            .placeholder(ColorDrawable(Color.GRAY))//占位图,当图片正在加载的时候会展示的图片
            .error(R.drawable.baseline_error_24)//错误图片,当图片家在错误的时候会展示的图片
            .skipMemoryCache(true)//设置是否跳过内存缓存
            .diskCacheStrategy(DiskCacheStrategy.ALL)//设置全局使用磁盘缓存
            .transform(CenterCrop(), RoundedCorners(radius))//展示图片的方式,中心拉伸,RoundedCorners(radius) 圆角拉伸
            .into(imageView)
    }
}